﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Text;
using System.Data.SqlClient;
using BibliotecaProjeto.persistencia;
using System.Windows.Forms;
using BibliotecaProjeto.usuario;

namespace BibliotecaProjeto.usuario
{

    public class DadosUsuario : persistencia.ConexaoSqlServer
    {

        #region Atributos
        private string instSql;
        #endregion

        #region Construtores
        /// <summary>
        /// Construtor da Classe
        /// </summary>
        #endregion
        public DadosUsuario() { }


        //método listar
        //public List<Usuario> selectUsuario()
        //{
        //    List<Usuario> retorno = new List<Usuario>();
        //    try
        //    {

        //        abrirConexao();

        //        SqlCommand cmd = new SqlCommand("SELECT usu_cpf,usu_nome,usu_numeroCartaoCredito,usu_numeroTelefone,usu_numeroCelular, usu_dataCadastro," +
        //            "usu_cep, usu_rua, usu_numero, usu_complemento, usu_bairro, usu_cidade, usu_uf, usu_pais FROM usuario ", conBD);


        //        SqlDataReader DbReader = cmd.ExecuteReader();

        //        while (DbReader.Read())
        //        {
        //            Usuario u = new Usuario();
        //            u.cpf = DbReader.GetString(DbReader.GetOrdinal("usu_cpf"));
        //            u.nome = DbReader.GetString(DbReader.GetOrdinal("usu_nome"));
        //            u.numeroCartaoCredito = DbReader.GetString(DbReader.GetOrdinal("usu_numeroCartaoCredito"));
        //            u.numeroTelefone = DbReader.GetString(DbReader.GetOrdinal("usu_numeroTelefone"));
        //            u.numeroCelular = DbReader.GetString(DbReader.GetOrdinal("usu_numeroCelular"));
        //            u.dataCadastro = DbReader.GetDateTime(DbReader.GetOrdinal("usu_dataCadastro"));
        //            u.cep = DbReader.GetString(DbReader.GetOrdinal("usu_cep"));
        //            u.rua = DbReader.GetString(DbReader.GetOrdinal("usu_rua"));
        //            u.numero = DbReader.GetString(DbReader.GetOrdinal("usu_numero"));
        //            u.complemento = DbReader.GetString(DbReader.GetOrdinal("usu_complemento"));
        //            u.bairro = DbReader.GetString(DbReader.GetOrdinal("usu_bairro"));
        //            u.cidade = DbReader.GetString(DbReader.GetOrdinal("usu_cidade"));
        //            u.uf = DbReader.GetString(DbReader.GetOrdinal("usu_uf"));
        //            u.país = DbReader.GetString(DbReader.GetOrdinal("usu_pais"));
        //            retorno.Add(u);
        //        }

        //        DbReader.Close();
        //        cmd.Dispose();
        //        fecharConexao();
        //    }
        //    catch (Exception ex)
        //    {
        //        throw new Exception("Erro ao selecionar " + ex.Message);
        //    }
        //    return retorno;
        //}




        //método cadastrar
        public void cadastrar(Usuario usuario)
        {
            try
            {

                SqlCommand cmd = conBD.CreateCommand();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "inserirUsuario";

                cmd.Parameters.Add(new SqlParameter("@cpf", usuario.cpf));
                cmd.Parameters.Add(new SqlParameter("@nome", usuario.nome));
                cmd.Parameters.Add(new SqlParameter("@numeroCartaoCredito", usuario.numeroCartaoCredito));
                cmd.Parameters.Add(new SqlParameter("@numeroTelefone", usuario.numeroTelefone));
                cmd.Parameters.Add(new SqlParameter("@numeroCelular", usuario.numeroCelular));
                cmd.Parameters.Add(new SqlParameter("@dataCadastro", usuario.dataCadastro));
                cmd.Parameters.Add(new SqlParameter("@cep", usuario.cep));
                cmd.Parameters.Add(new SqlParameter("@rua", usuario.rua));
                cmd.Parameters.Add(new SqlParameter("@numero", usuario.numero));
                cmd.Parameters.Add(new SqlParameter("@complemento", usuario.complemento));
                cmd.Parameters.Add(new SqlParameter("@bairro", usuario.bairro));
                cmd.Parameters.Add(new SqlParameter("@cidade", usuario.cidade));
                cmd.Parameters.Add(new SqlParameter("@uf", usuario.uf));
                cmd.Parameters.Add(new SqlParameter("@pais", usuario.país));

                cmd.Prepare();
                abrirConexao();
                cmd.ExecuteNonQuery();
                fecharConexao();

            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao inserir usuário: " + ex.Message);
            }
        }


        //método atualizar
        public void atualizar(Usuario usuario)
        {
            try
            {
                abrirConexao();
                instSql = "update usuario set usu_nome = '" + usuario.nome + "', usu_numeroCartaoCredito = '" + usuario.numeroCartaoCredito + "', usu_numeroTelefone = '" + usuario.numeroTelefone + "', usu_numeroCelular = '" + usuario.numeroCelular + "' where usu_cpf = '" + usuario.cpf + "'";
                fecharConexao();
            }

            catch (Exception ex)
            {
                throw new Exception("Erro ao atualizar usuário: " + ex.Message);
            }
        }


        //método remover
        public void remover(Usuario usuario)
        {
            try
            {
                abrirConexao();
                instSql = "delete from usuario where cpf = '" + usuario.cpf + "'";
                fecharConexao();
            }

            catch (Exception ex)
            {
                throw new Exception("Erro ao remover usuario: " + ex.Message);
            }

        }


        //método buscarUsuario
        public List<Usuario> buscar(Usuario u)
        {
            List<Usuario> retorno = new List<Usuario>();

            try
            {
                abrirConexao();

                SqlCommand cmd = conBD.CreateCommand();
                string sql = " SELECT usu_cpf,usu_nome,usu_bairro,usu_cidade,usu_uf,usu_numeroCartaoCredito,usu_numeroTelefone FROM usuario where usu_cpf = usu_cpf ";

                if (u.nome != null && u.nome.Trim() != "")
                {
                    sql += " and usu_nome like '%" + u.nome + "%'";
                }
                if (u.cpf != null &&  u.cpf.Trim() != "")
                {
                    sql += " and usu_cpf  = '" + u.cpf + "'";
                }
                cmd = new SqlCommand(sql, conBD);
                

                SqlDataReader DbReader = cmd.ExecuteReader();

                while (DbReader.Read())
                {
                    Usuario usu = new Usuario();
                    usu.cpf = DbReader.GetString(DbReader.GetOrdinal("usu_cpf"));
                    usu.nome = DbReader.GetString(DbReader.GetOrdinal("usu_nome"));
                    usu.numeroCartaoCredito = DbReader.GetString(DbReader.GetOrdinal("usu_numeroCartaoCredito"));
                    usu.numeroTelefone = DbReader.GetString(DbReader.GetOrdinal("usu_numeroTelefone"));
                    usu.bairro = DbReader.GetString(DbReader.GetOrdinal("usu_bairro"));
                    usu.cidade = DbReader.GetString(DbReader.GetOrdinal("usu_cidade"));
                    usu.uf = DbReader.GetString(DbReader.GetOrdinal("usu_uf"));

                    retorno.Add(usu);
                }

                DbReader.Close();
                cmd.ExecuteNonQuery();
                fecharConexao();

            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao conectar: " + ex.Message);

            }

            return retorno;

        }
    }
}



